/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.knolle.campanias.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import org.marcelo.agro.entidades.Actividades;

/**
 *
 * @author marcelo
 */
public class ActividadesTableModel extends AbstractTableModel {

    private final int CAMPO_ID = 0;
    private final int CAMPO_FECHA = 1;
    private final int CAMPO_TIPO_ACTIVIDAD = 2;
    private final int CAMPO_TIPO_PRODUCTO = 3;
    private final int CAMPO_PRODUCTO = 4;
    private final int CAMPO_CONTROL = 5;
    private final int CAMPO_DOSIS = 6;
    private final int CAMPO_UNIDAD_MEDIDA = 7;
    private final int CAMPO_PRECIO = 8;
    private final int CAMPO_SUPERFICIE = 9;
    private final int CAMPO_TOTAL = 10;
    private final int CAMPO_COMENTARIO = 11;
    
    private String[] columnNames = {"Id","Fecha","Tipo Actividad","Tipo Producto", "Producto", "Control", "Dosis", "Unidad Medida", "Precio", "Superficie","Total" ,"Comentario"}; 
        //Los datos debo traer del lookup, ver que valor tiene campana y que valor tiene lote
        //acer una consulta y traer los datos para ver la lista de actividades
    private List<Actividades> datos = null;
        
    public ActividadesTableModel(List<Actividades> datos){
         this.datos = datos;
    }
    
    public ActividadesTableModel(){
         this.datos = new LinkedList<Actividades>();
    }
    
    
    @Override
    public int getRowCount() {
        return datos.size();
    }

    @Override
    public int getColumnCount() {
        return columnNames.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        String mensaje = "Datos No Inicializados";
        Actividades actividad = datos.get(rowIndex);
        switch (columnIndex) {
            case CAMPO_ID: 
                return null != actividad.getId() ? actividad.getId() : 0 ;
            case CAMPO_FECHA: 
            {
//                DateFormatter dateFormatter = new DateFormatter(df);
                DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
                return null != actividad.getFecha() ?   df.format(actividad.getFecha()) : "";
            }
            case CAMPO_TIPO_ACTIVIDAD: 
                return null != actividad.getTipoActividad()? actividad.getTipoActividad() : "";
            case CAMPO_TIPO_PRODUCTO: 
                return null != actividad.getTipoProducto()? actividad.getTipoProducto() : "";
            case CAMPO_PRODUCTO: 
                return null != actividad.getProductos()?actividad.getProductos():"";
            case CAMPO_CONTROL: 
                return actividad.getControl();
            case CAMPO_DOSIS:
                return actividad.getDosis();
            case CAMPO_UNIDAD_MEDIDA: 
                return null != actividad.getUnidadMedidaDosis()?actividad.getUnidadMedidaDosis():"";
            case CAMPO_PRECIO: 
                return actividad.getPrecioUnitario();
            case CAMPO_SUPERFICIE: 
                return null != actividad.getSuperficie()? actividad.getSuperficie()+" ("+actividad.getUnidadMedidaSuperficie().getNombre()+")":"";
            case CAMPO_TOTAL: {
                try {
                    BigDecimal total = new BigDecimal("0.00") ;
                    total = actividad.getSuperficie().multiply(actividad.getPrecioUnitario());
                    total = total.multiply(actividad.getDosis());
                    
                    return total.toString();
                }
                catch (NullPointerException npe){
                   return "";
                }
            }
            case CAMPO_COMENTARIO: 
                return actividad.getComentarios();
            default: return "No hay datos para mostrar";    
        }
    }

    @Override
    public String getColumnName(int column) {
        return columnNames[column];
    }
    
    
    
    public List getList(){
       return this.datos;
    }
    
}
